package cn.itcast.javabase;

/**
 * @title: Scope01
 * @Author Zhou
 * @Date: 2022/1/6 14:04
 * @Version 1.0
 */
public class Scope01 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.run();
        //跨类使用全局变量，局部变量只能在本类中对应的方法中使用
        T t = new T();
        t.test();
    }
}

class Cat {
    //全局变量：也就是属性，作用域为整个类体，Cat类，cry、eat方法使用属性
    //属性在定义时，可以直接赋值
    /*
    全局变量有默认值，局部变量必须赋值后使用，因为没有默认值。
     */
    int age = 10;
    int n = 10;
    //属性可以加修饰符，但是局部变量不能加
    public String contry;

    public void cay() {
        //局部变量一般是指在成员方法中定义的变量
        //n和name 就是局部变量
        //n和name的作用域只在cry方法中，出了这个方法就用不了了
        int n = 10;
        //局部变量要初始化了才可以使用
        //变量--就近原则
        //如果存在一个全局变量，局部变量的名称一样，则遵循就近原则，使用最近的变量。
        String name = "jack";
        System.out.println("name = " + name);
        System.out.println("n = " + n);
    }

    public void run() {
        System.out.println("age" + age);
    }
}

class T {
    public void test() {
        Cat cat = new Cat();
        System.out.println(cat.n);
    }
}
